package Servidor;

import java.util.ArrayList;

public class Alumno extends Usuario {
	private ArrayList<ExamenEspecifico> _listaExamenesEspecificos = new ArrayList<ExamenEspecifico>();

	public PaqueteCORBA.InfoExamenEspecifico verExamenEspecifico(String aIdExamen) {
            PaqueteCORBA.InfoExamenEspecifico iee = new PaqueteCORBA.InfoExamenEspecifico();
            ExamenEspecifico ee = findExamen(aIdExamen);

            if (ee != null) {
                iee.nota = ee.getNota();
				iee.preguntas = new PaqueteCORBA.InfoPregunta[ee.getExamen().getNumPreguntas()];

                ArrayList<Pregunta> listaPreguntas = new ArrayList<Pregunta>();

                for (int i = 0; i < listaPreguntas.size(); i++) {
                    PaqueteCORBA.InfoPregunta ip = new PaqueteCORBA.InfoPregunta();
                    ArrayList<Respuesta> respuestas = listaPreguntas.get(i).getRespuestas();
                    ArrayList<Respuesta> respuestasMarcadas = ee.getRespuestaAlumno(listaPreguntas.get(i));

                    ip.enunciadoPregunta = listaPreguntas.get(i).getEnunciadoPregunta();
					ip.respuestas = new PaqueteCORBA.InfoRespuesta[respuestas.size()];

                    for (int j = 0; j < respuestas.size(); j++) {
                        PaqueteCORBA.InfoRespuesta ir = new PaqueteCORBA.InfoRespuesta();

                        ir.correcta = respuestas.get(j).getEsCierta();
                        ir.marcada = respuestasMarcadas.contains(respuestas.get(j));
                        ir.respuesta = respuestas.get(j).getEnunciadoRespuesta();

                        ip.respuestas[j] = ir;
                    }

                    iee.preguntas[i] = ip;
                }

                return iee;
            } else {
                return null;
            }
        }

	public ExamenEspecifico findExamen(String aIdExamen) {            
            for(int i=0; i< _listaExamenesEspecificos.size(); i++)                
                if(_listaExamenesEspecificos.get(i).getExamen().getIdExamen().equals(aIdExamen))
                    return _listaExamenesEspecificos.get(i);                                    
            return null;                
	}

	public void addExamen(ExamenEspecifico aEe) {
		_listaExamenesEspecificos.add(aEe);
	}

	public void contestarPregunta(String aIdExamenEsp, String aIdPregunta, String aIdRespuesta) {
            ExamenEspecifico ee = this.findExamen(aIdExamenEsp);
            ee.addRespuestaAlumno(aIdPregunta, aIdRespuesta);
	}

	void terminarExamen(String idExamen) {
		findExamen(idExamen).setTerminado(true);
	}
}